/**
 * 使用setInterval模拟setTimeout
 * @param {*} fn 回调函数
 * @param {*} timeout 延长时间，参考setTimeout
 * @returns 取消函数
 */
const simulateSetTimeout = (fn, timeout) => {
  let timer = null

  timer = setInterval(() => {
    clearInterval(timer) // 调用一次直接清楚，防止多次调用
    fn()
  }, timeout) //呃，好家伙，直接频率设置为延时是吧

  return () => clearInterval(timer)
}

const cancel = simulateSetTimeout(() => {
  console.log(1)
}, 1000)

setTimeout(() => {
  cancel()
}, 5000)